bash | 您所在的位置:网站首页 › curl post params › bash |
Я работаю над сценарием оболочки bash, который выполняет вызов API POST в github, чтобы обновить статус запроса на вытягивание с помощью команды curl, ниже приведен сценарий, который я использую export scan_status='' export status_description='' if[ "$(param.status)" == "Succeeded" ]; then scan_status="success" status_description="scan successful" elif[ "$(param.status)" == "Failed" ]; then scan_status="failure" status_description="scan failed" else scan_status="pending" status_description="scan pending" fi _HTTP_STATUS=$( curl --silent --show-error --insecure \ --connect-timeout 20 --retry 5 --retry-delay 0 --retry-max-time 60 \ --header 'Accept: application/vnd.github.v3+json' \ --header 'Content-Type: application/json' \ --header 'User-Agent: TektonCD, the peaceful cat' \ --header 'Authorization: token '${GITHUB_TOKEN} \ --output ${_OUT_DATA} \ --write-out "%{http_code}\n" \ --data '{"state":"${scan_status}","target_url":"","description":"${status_description}","context":"Checkmarx/$(params.datasource)"}' \ --request POST \ --url "$PR_STATUS_URL" | head -1 ) echo "status:${_HTTP_STATUS}"Когда я нажимаю это через скрипт, я получаю ошибку 422 при его отладке, я заметил, что параметры scan_status, status_description в разделе данных передаются как «$ {scan_status}» и «$ {status_description}», а не их значения. Я пробовал передавать их без двойных кавычек, в одинарных кавычках, без фигурных скобок, но ни один из них не работал у меня. Может кто-нибудь, пожалуйста, помогите мне исправить это bash shell curl sh 0 Karthik Peddineni 21 Мар 2023 в 19:46 Это потому, что они встроены в строки с одинарными кавычками. Вы должны использовать jq для создания JSON, а не создавать его вручную с использованием интерполяции параметров. – chepner 21 Мар 2023 в 23:24 2 ответаОбновить эту строку --data '{"state":"${scan_status}","target_url":"","description":"${status_description}","context":"Checkmarx/$(params.datasource)"}' \К --data "{\"state\":\"${scan_status}\",\"target_url\":\"\",\"description\":\"${status_description}\",\"context\":\"Checkmarx/$(params.datasource)\"}" \Заметка: Значения в одинарных кавычках не разрешаются в bash. 0 Shubham Vaishnav 21 Мар 2023 в 21:12Используя здесь документ, не нужно ничего цитировать в вашем JSON: curl --silent --show-error --insecure \ --connect-timeout 20 --retry 5 --retry-delay 0 --retry-max-time 60 \ --header 'Accept: application/vnd.github.v3+json' \ --header 'Content-Type: application/json' \ --header 'User-Agent: TektonCD, the peaceful cat' \ --header 'Authorization: token "${GITHUB_TOKEN}" \ --output "${_OUT_DATA}" \ --write-out "%{http_code}\n" \ --url "$PR_STATUS_URL" --data "@/dev/stdin" |
CopyRight 2018-2019 实验室设备网 版权所有 |